home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / minix / up1510b.tgz / up1510b / src / kernel / sthdc.h < prev    next >
C/C++ Source or Header  |  1988-11-10  |  2KB  |  85 lines

  1. /*
  2.  * Atari ST hardware:
  3.  * SH 204 - Hard Disk Drive and Controller
  4.  */
  5.  
  6. /*
  7.  * Commands, to be written to low 5 bits of DMA->dma_data
  8.  */
  9. #define    HD_TUR    0x00    /* Test Unit Ready */
  10. #define    HD_RST    0x01    /* ReSTore; in fact a ReSeT + head to track 0 */
  11. #define    HD_RQS    0x03    /* ReQuest Sense */
  12. #define    HD_FDR    0x04    /* Format DRive */
  13. #define    HD_RD    0x08    /* ReaD */
  14. #define    HD_WR    0x0a    /* WRite */
  15. #define    HD_SK    0x0b    /* SeeK */
  16. #define    HD_MSL    0x15    /* Mode SeLect */
  17. #define    HS_SHP    0x1b    /* seek to SHipping Position */
  18.  
  19. /*
  20.  * bits in completion status byte:
  21.  */
  22. #define    HDC_CC    0x02    /* Check Condition */
  23.  
  24. /*
  25.  * codes for byte 0 of status block returned by HD_RQS:
  26.  */
  27. #define    NOERROR        0x00
  28. #define    NOINDEX        0x01
  29. #define    NOSEEKCOMPLETE    0x02
  30. #define    WRITEFAULT    0x03
  31. #define    DRIVENOTREADY    0x04
  32. #define    NOTRACKZERO    0x06
  33. #define    IDECC        0x10
  34. #define    BADDATA        0x11
  35. #define    NOIDADDRMARK    0x12
  36. #define    NODATAADDRMARK    0x13
  37. #define    NORECORD    0x14
  38. #define    BADSEEK        0x15
  39. #define    DATANOECC    0x18
  40. #define    DATAECC        0x19
  41. #define    BADFORMAT    0x1c
  42. #define    BADSELFTEST    0x1d
  43. #define    BADOP        0x20
  44. #define    BADBLOCKADDR    0x21
  45. #define    BADFINALADDR    0x23
  46. #define    BADARG        0x24
  47. #define    BADDEVICE    0x25
  48.  
  49. /*
  50.  * Partition information (part of sector 0)
  51.  */
  52. struct pi {
  53.   char    pi_flag;        /* active byte */
  54.   char    pi_id[3];        /* partition id (GEM or MIX(?)) */
  55.   long    pi_start;        /* first sector */
  56.   long    pi_size;        /* total number of sectors */
  57. };
  58.  
  59. /* values of pi_flag: */
  60. #define    PI_INVALID    0x00
  61. #define    PI_BOOT        0x80
  62.  
  63. #define    NPARTS        4
  64.  
  65. /*
  66.  * Hard disk information (sector 0) of any hard disk drive
  67.  */
  68. struct hi {
  69.   char        hi_gap1[0x1B6];    /* reserved */
  70.   short        hi_cc;        /* number of cylinders */
  71.   char        hi_dhc;        /* number of heads */
  72.   char        hi_gap2[1];    /* reserved */
  73.   short        hi_rwcc;    /* reduced write current cyl */
  74.   short        hi_wpc;        /* write-precompensation cyl */
  75.   char        hi_lz;        /* landing zone */
  76.   char        hi_rt;        /* seek rate code */
  77.   char        hi_in;        /* interleave factor */
  78.   char        hi_spt;        /* sectors per track */
  79.   long        hd_size;    /* size of disk in sectors */
  80.   struct pi    hd_pi[NPARTS];    /* 4 partition descriptors */
  81.   long        bsl_start;    /* start of bad sector table */
  82.   long        bsl_count;    /* number of bad sectors */
  83.   short        hi_magic;    /* reserved for checksum */
  84. };
  85.